package com.sas.repository;

import com.sas.entity.Customer;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 客户Repository接口
 */
@Repository
public interface CustomerRepository extends JpaRepository<Customer, Long> {

    /**
     * 根据状态查询客户
     */
    List<Customer> findByStatus(Integer status);

    /**
     * 根据护理等级查询客户
     */
    List<Customer> findByCareLevel(Integer careLevel);

    /**
     * 根据护理等级和状态查询客户
     */
    List<Customer> findByCareLevelAndStatus(Integer careLevel, Integer status);

    /**
     * 根据姓名模糊查询客户
     */
    List<Customer> findByNameContaining(String name);

    /**
     * 根据年龄范围查询客户
     */
    @Query("SELECT c FROM Customer c WHERE c.age >= :minAge AND c.age <= :maxAge AND c.status = 1")
    List<Customer> findByAgeRange(@Param("minAge") Integer minAge, @Param("maxAge") Integer maxAge);

    /**
     * 根据性别查询客户
     */
    List<Customer> findByGenderAndStatus(Integer gender, Integer status);

    /**
     * 查询活跃客户按护理等级排序
     */
    @Query("SELECT c FROM Customer c WHERE c.status = 1 ORDER BY c.careLevel DESC, c.age DESC")
    List<Customer> findActiveCustomersOrderByCareLevelAndAge();

    /**
     * 已弃用：字符串状态查询（实体为整数状态）。请使用 findByStatus(Integer status)。
     */
    // 移除不匹配的字符串状态查询，避免与实体类型冲突
}